/*
Number类型
    typescript和JavaScript一样，不区分整数和浮点数，统一称为number类型
        let age:number=22;
        let height:number=23.5;

Boolean类型
    Boolean类型只有两个取值：true和false
        let flag:boolean=true;
        let  isLogin:boolean=false

string类型
    string类型是字符串类型可以使用单引号或者双引号
        let address:string="衡阳";
        let school:string="黑马";
        let res:string=`${address}${school}`
Array类型
    数组是用来存储一批同种数量的数据结构
    明确指定<数组>的类型注解
        1. string[]: 数组类型，并且数组中的元素存放的是string类型
        2. Array<number>: 数组类型，并且数组中的元素存放的是number类型
        let names: string[] = ["马云", "马化腾", "马宝国"];
        names.push("王健林");
        // names.push(1314)  number类型不能存放在string类型的数组中

        let numbers: Array<number> = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
        numbers.push(11)
        // numbers.push("陶") string类型不能存放在number类型的数组中

        let myAddress: string[] = new Array("湖南省", "北京市")
        myAddress.push("衡阳")

object类型
      object类型可以用来描述一个对象，由键值对组成，有属性和方法
      type personType = {
            name: string,
            age: number
      }

       interface studentInterface {
            name: string,
            age: number
       }

       let person: { name: string, age: number } = {name: "陶品奇", age: 22,}
       let student: studentInterface = {name: "尚硅谷", age: 20}
       let a: any = [1, 2, "3",true]

Symbol类型
      在ES5中，我们是不可以在对象中添加相同的属性，通常是定义两个不同的属性名，但是可以通过Symbol类型来定义相同的名称，因为Symbol函数返回的是不同的值

null类型和undefined类型
      在typescript中它们各自的值也是undefined和null，意味着它们既是实际的值，也是自己的类型
      let n:null=null;
      let u:undefined=undefined
*/

// number类型
let age: number = 22;
let height: number = 23.5;

// boolean类型
let flag: boolean = true;
let isLogin: boolean = false;


// string类型
let address: string = "衡阳";
let school: string = "黑马";
let res: string = `${address}${school}`;

// Array类型
/*
明确指定<数组>的类型注解
    1. string[]: 数组类型，并且数组中的元素存放的是string类型
    2. Array<number>: 数组类型，并且数组中的元素存放的是number类型
*/

let names: string[] = ["马云", "马化腾", "马宝国"];
names.push("王健林");
// names.push(1314)  number类型不能存放在string类型的数组中

let numbers: Array<number> = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
numbers.push(11)
// numbers.push("陶") string类型不能存放在number类型的数组中

let myAddress: string[] = new Array("湖南省", "北京市")
myAddress.push("衡阳")
// myAddress.push(520) number类型不能存放在string类型的数组中

// object类型
type personType = {
    name: string,
    age: number
}

interface studentInterface {
    name: string,
    age: number
}

let person: { name: string, age: number } = {name: "陶品奇", age: 22,}
let student: studentInterface = {name: "尚硅谷", age: 20}
let a: any = [1, 2, "3", true]

// Symbol类型
/*const symbol1: symbol = Symbol("title");
const symbol2: symbol = Symbol("title");
const titleInfo: { [p: symbol]: string } = {
    [symbol1]: "老师",
    [symbol2]: "程序员"
}*/

// null类型和undefined类型
let n:null=null;
let u:undefined=undefined